The present invention relates generally to the field of key-value data stores, and also to high-performance remote data access.
A key-value (KV) store, or KV database, is a collection of data structured as an associative array (also known as a dictionary or hash) of key-value pairs. Each key typically appears only once, and, in contrast to traditional relational databases, there is not necessarily any particular structure imposed on the value portion of an entry, nor any consistency between the value portions of different KV pairs. For example, one KV pair might be “123: ‘A quick brown fox’” while another might be “456: F016A5, 21, 2016-05-15”. KV stores have existed for some time, but are finding increased use in technologies such as cloud computing, big data analytics, and real-time web applications that face ever-growing performance demands.
Remote direct memory access (RDMA), or remote memory access (RMA), is direct memory access between the memory of one computer in a network and the memory of another (remote) computer. Data is transferred to or from the remote memory largely or entirely without the involvement of the operating system and/or central processing unit(s) (CPU(s)) on either or both computers, freeing CPU cycles and the associated data transfer bandwidth for other tasks. Copying of data between layers of the network protocol stack is also typically eliminated (the so-called “zero-copy” characteristic). RDMA can support both two-sided (a “send” command on one node must match a “receive” command on the other) and one-sided (a “read” or “write” command on one node can perform an operation without a complementary command pairing on the remote node) operations. Known benefits of RDMA implementations include high throughput, low latency, low CPU utilization, and/or reduced bus contention.
A “service, as that term is used herein,” is a self-contained unit of machine logic (for example, software) functionality (for example, retrieving an online utility bill) that may be discretely invoked. A service may include the performance of one, or more, operations. A service may be encapsulated behind an interface. If a service is deployed in a cloud (that is, behind a cloud interface with respect to the user of the service, then it is a “cloud service.” Cloud services typically involve shared, remote processing resources and/or storage data resources are provided to users, but where the topology, architecture, hardware identity and hardware characteristics of the hardware providing the cloud services are not needed to be known, and not typically known, by the user of the cloud service. Cloud services can be used to enable ubiquitous, on-demand access to a shared pool of configurable computing resources (for example, networks, servers, storage, applications and services), which are rapidly provisioned and released with relatively little management effort. In this way, cloud services can provide user and enterprises with various capabilities to implement and maintain the hardware and software used to provide the cloud service in and/or among third-party data centers. Cloud services leverage sharing of resources to achieve coherence and economy of scale over a communication network, somewhat analogous to the way a utility power grid delivers electrical energy to a great multiplicity of consumers and from a variety of electrical energy sources over a network of physical power lines.